const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const {CleanWebpackPlugin} = require('clean-webpack-plugin')

//webpack的配置文件都会写在module.exports中
module.exports = {
  //指定程序入口
  entry:'./src/index.ts',

  //指定打包文件所在目录
  output:{
    //指定打包文件所在目录
    path: path.resolve(__dirname, 'dist'),
    //指定打包文件的名字
    filename: 'bundle.js',

    //告诉webpack打包的时候不使用箭头函数
    environment: {
      arrowFunction:false,
      const: false
    }
  },

  //指定webpack打包的时候需要的插件模块
  module: {

    //指定加载规则
    rules:[
      //每个规则就是一个对象
      {
        //匹配后缀是ts的文件
        test:/\.ts$/,
        //要使用的loader
        use:[
          //配置Babel
          {
            //指定加载器
            loader: 'babel-loader',
            //设置babel
            options: {
              //设置预定义的环境
              presets:[ 
                [
                  //指定环境的插件，注意这是"@babel/preset-env"是/
                  "@babel/preset-env",
                  //配置信息
                  {
                    //要兼容的目标浏览器
                    targets: {
                      "chrome":'88',
                      "ie": "11"

                    },
                    //指定corejs的版本,注意这是corejs
                    "corejs":'3',
                    //使用corejs的方式
                    "useBuiltIns":'usage'
                  }
                ]
              ]
            }

          },
          //配置ts
          'ts-loader',
        ],

          
        //要排除的文件
        exclude: /node_modules/
      },
      //设置less处理
      {
        test:/\.less/,
        use:[
          'style-loader',
          'css-loader',
          //引入postcss
          {
            loader:'postcss-loader',
            options: {
              postcssOptions: {
                plugins:[
                  [
                    'postcss-preset-env',
                    {
                      browser: 'last 5 versions'
                    }
                  ]
                ]
              }
            }
          },
          'less-loader'
        ],
      }
    ]
  },
  //配置webpack的插件
  plugins:[
    new CleanWebpackPlugin(),
    new HtmlWebpackPlugin({
      template:'./src/index.html'
    })
  ],
  //报以下错可以设置mode: 'development'
  // WARNING in configuration
  //The 'mode' option has not been set, webpack will fallback to 'production' for this value.
  //Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
  //You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/configuration/mode/
  mode: 'development',

  //用来设置模块引用
  resolve: {
    extensions:['.ts','.js','less']
  }

}